SQL Functions এবং Operators

Database Tutorials - অ্যাপাচি প্রেস্টো (Apache Presto)
175
175

SQL ফাংশন এবং অপারেটরগুলি SQL কোয়েরি তৈরি করার জন্য অপরিহার্য টুলস। এগুলি ডেটা ম্যানিপুলেশন, গণনা এবং বিশ্লেষণ করার জন্য ব্যবহৃত হয়। SQL ফাংশন এবং অপারেটরগুলি ডেটাবেসে ডেটা প্রক্রিয়া করতে সহায়ক, যেমন যোগফল, গড়, গণনা, সার্চ, এবং অন্যান্য ক্রিয়া। নিচে SQL ফাংশন এবং অপারেটরের বিভিন্ন ধরণ এবং তাদের ব্যবহার ব্যাখ্যা করা হলো।


১. SQL Functions

SQL ফাংশনগুলি নির্দিষ্ট অপারেশন বা গণনা সম্পাদন করতে ব্যবহৃত হয়। ফাংশনগুলির মধ্যে Scalar Functions (যেগুলি একক মান প্রক্রিয়া করে) এবং Aggregate Functions (যেগুলি একাধিক রেকর্ডের উপর গণনা করে) অন্তর্ভুক্ত থাকে।

Scalar Functions

Scalar Functions একক মানের উপর কাজ করে এবং এটি একটি একক মান প্রদান করে।

  1. COUNT(): রেকর্ডের সংখ্যা গণনা করতে ব্যবহৃত হয়।

    SELECT COUNT(*) FROM employees;
    
  2. SUM(): নির্দিষ্ট কলামের মোট যোগফল বের করতে ব্যবহৃত হয়।

    SELECT SUM(salary) FROM employees;
    
  3. AVG(): নির্দিষ্ট কলামের গড় মান বের করতে ব্যবহৃত হয়।

    SELECT AVG(salary) FROM employees;
    
  4. MIN(): একটি কলামে সর্বনিম্ন মান বের করতে ব্যবহৃত হয়।

    SELECT MIN(salary) FROM employees;
    
  5. MAX(): একটি কলামে সর্বোচ্চ মান বের করতে ব্যবহৃত হয়।

    SELECT MAX(salary) FROM employees;
    
  6. UPPER(): টেক্সটকে বড় অক্ষরে রূপান্তরিত করে।

    SELECT UPPER(first_name) FROM employees;
    
  7. LOWER(): টেক্সটকে ছোট অক্ষরে রূপান্তরিত করে।

    SELECT LOWER(first_name) FROM employees;
    
  8. CONCAT(): দুইটি স্ট্রিং একত্রিত করতে ব্যবহৃত হয়।

    SELECT CONCAT(first_name, ' ', last_name) FROM employees;
    
  9. ROUND(): একটি সংখ্যা নির্দিষ্ট দশমিক স্থানে রাউন্ড করতে ব্যবহৃত হয়।

    SELECT ROUND(salary, 2) FROM employees;
    
  10. LENGTH(): একটি স্ট্রিংয়ের দৈর্ঘ্য বের করতে ব্যবহৃত হয়।

    SELECT LENGTH(first_name) FROM employees;
    
  11. NOW(): বর্তমান সময় এবং তারিখ ফেরত দেয়।

    SELECT NOW();
    

Aggregate Functions

Aggregate Functions একাধিক রেকর্ডের উপর কাজ করে এবং একটি ফলাফল প্রদান করে।

  1. COUNT(): একটি টেবিল বা কলামের মোট রেকর্ড সংখ্যা গণনা করে। আগেই দেখানো হয়েছে।
  2. SUM(): একটি কলামের মোট যোগফল বের করে। আগেই দেখানো হয়েছে।
  3. AVG(): একটি কলামের গড় মান বের করে। আগেই দেখানো হয়েছে।
  4. MIN(): একটি কলামের সর্বনিম্ন মান বের করে। আগেই দেখানো হয়েছে।
  5. MAX(): একটি কলামের সর্বোচ্চ মান বের করে। আগেই দেখানো হয়েছে।

২. SQL Operators

SQL অপারেটরগুলি ডেটা ফিল্টারিং, সাচিং এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এগুলি বিভিন্ন ধরনের হতে পারে, যেমন:

1. Arithmetic Operators

এই অপারেটরগুলি গাণিতিক গণনা করতে ব্যবহৃত হয়।

  • +: যোগফল।

    SELECT price + tax FROM products;
    
  • -: বিয়োগফল।

    SELECT price - discount FROM products;
    
  • *: গুণফল।

    SELECT quantity * price FROM products;
    
  • /: ভাগফল।

    SELECT total_amount / quantity FROM products;
    
  • %: ভাগশেষ (modulus)।

    SELECT amount % 10 FROM payments;
    

2. Comparison Operators

এই অপারেটরগুলি ডেটা তুলনা করতে ব্যবহৃত হয়।

  • =: সমান।

    SELECT * FROM employees WHERE salary = 50000;
    
  • != বা <>: সমান নয়।

    SELECT * FROM employees WHERE salary != 50000;
    
  • >: বড়।

    SELECT * FROM employees WHERE salary > 50000;
    
  • <: ছোট।

    SELECT * FROM employees WHERE salary < 50000;
    
  • >=: বড় বা সমান।

    SELECT * FROM employees WHERE salary >= 50000;
    
  • <=: ছোট বা সমান।

    SELECT * FROM employees WHERE salary <= 50000;
    
  • BETWEEN: একটি নির্দিষ্ট সীমার মধ্যে মান খুঁজে বের করা।

    SELECT * FROM employees WHERE salary BETWEEN 40000 AND 60000;
    
  • IN: নির্দিষ্ট মানের মধ্যে থাকা।

    SELECT * FROM employees WHERE department IN ('HR', 'IT');
    
  • LIKE: প্যাটার্ন ম্যাচিং (wildcard)।

    SELECT * FROM employees WHERE name LIKE 'J%';
    

3. Logical Operators

  • AND: দুটি শর্ত পূর্ণ হলে সত্য ফেরত দেয়।

    SELECT * FROM employees WHERE salary > 50000 AND department = 'HR';
    
  • OR: কোনো একটি শর্ত পূর্ণ হলে সত্য ফেরত দেয়।

    SELECT * FROM employees WHERE salary > 50000 OR department = 'IT';
    
  • NOT: একটি শর্তের বিপরীত ফলাফল ফেরত দেয়।

    SELECT * FROM employees WHERE NOT department = 'IT';
    

৪. SQL String Functions

এই ফাংশনগুলি স্ট্রিং ডেটা টাইপের উপর কাজ করে এবং টেক্সট ম্যানিপুলেশন করতে সহায়ক।

  • CONCAT(): স্ট্রিং একত্রিত করে।

    SELECT CONCAT(first_name, ' ', last_name) FROM employees;
    
  • SUBSTRING(): স্ট্রিংয়ের একটি নির্দিষ্ট অংশ বের করে।

    SELECT SUBSTRING(first_name, 1, 3) FROM employees;
    
  • TRIM(): স্ট্রিংয়ের অপ্রয়োজনীয় সাদা স্থান মুছে ফেলে।

    SELECT TRIM(first_name) FROM employees;
    

সারাংশ

SQL ফাংশন এবং অপারেটরগুলি ডেটার উপর বিভিন্ন গণনা এবং ম্যানিপুলেশন করার জন্য অত্যন্ত গুরুত্বপূর্ণ। Scalar Functions একক মান প্রক্রিয়া করে, এবং Aggregate Functions একাধিক রেকর্ডের উপর কাজ করে। অপারেটরগুলি ডেটা তুলনা, গণনা, বা যুক্ত করতে ব্যবহৃত হয়। SQL ফাংশন এবং অপারেটরগুলি ব্যবহার করে আপনি ডেটাবেসে দ্রুত এবং কার্যকরভাবে ডেটা বিশ্লেষণ করতে পারবেন।

Content added By

Scalar Functions

199
199

Presto তে Scalar Functions হলো সেই ফাংশনগুলি যা এক বা একাধিক আর্গুমেন্ট গ্রহণ করে এবং একটি একক মান ফেরত দেয়। এই ফাংশনগুলি সাধারণত ডেটার উপর বিভিন্ন গণনা বা রূপান্তর করতে ব্যবহৃত হয়, যেমন সংখ্যা, তারিখ, স্ট্রিং ইত্যাদি।

Scalar Functions এর মাধ্যমে ডেটার উপর গাণিতিক, স্ট্রিং এবং লজিকাল অপারেশন করা সম্ভব। Presto তে বিল্ট-ইন অনেক scalar function রয়েছে, যেমন abs(), length(), lower(), concat(), round() ইত্যাদি।


Scalar Functions এর ধরন

  1. গণিতিক Functions (Mathematical Functions)
    এই ধরনের ফাংশন গাণিতিক অপারেশন করতে ব্যবহৃত হয়।
    • abs(x): একটি সংখ্যার গাণিতিক মান ফেরত দেয়।

      SELECT abs(-5);
      -- Output: 5
      
    • round(x, d): সংখ্যা x কে d দশমিক স্থান পর্যন্ত রাউন্ড করে।

      SELECT round(3.14159, 2);
      -- Output: 3.14
      
  2. স্ট্রিং Functions (String Functions)
    স্ট্রিংয়ের উপর বিভিন্ন অপারেশন করতে ব্যবহার করা হয়।
    • length(s): স্ট্রিং s এর দৈর্ঘ্য ফেরত দেয়।

      SELECT length('Presto');
      -- Output: 6
      
    • lower(s): স্ট্রিং s কে ছোট হাতের অক্ষরে রূপান্তরিত করে।

      SELECT lower('Presto');
      -- Output: presto
      
    • upper(s): স্ট্রিং s কে বড় হাতের অক্ষরে রূপান্তরিত করে।

      SELECT upper('Presto');
      -- Output: PRESTO
      
  3. তারিখ ও সময় Functions (Date and Time Functions)
    তারিখ এবং সময়ের উপর অপারেশন করতে ব্যবহৃত হয়।
    • current_date: বর্তমান তারিখ ফেরত দেয়।

      SELECT current_date;
      -- Output: 2024-11-27 (এটি বর্তমান তারিখ)
      
    • date_add(unit, value, date): নির্দিষ্ট একক (যেমন দিন, মাস, বছর) এর মাধ্যমে একটি তারিখে যোগ করা হয়।

      SELECT date_add('day', 10, current_date);
      -- Output: 2024-12-07
      
    • date_sub(unit, value, date): নির্দিষ্ট একক এর মাধ্যমে একটি তারিখ থেকে কমানো হয়।

      SELECT date_sub('month', 2, current_date);
      -- Output: 2024-09-27
      
  4. লজিকাল Functions (Logical Functions)
    লজিক্যাল পরীক্ষা বা সিদ্ধান্ত নেওয়ার জন্য ব্যবহৃত হয়।
    • coalesce(a, b, ...): যদি প্রথম আর্গুমেন্ট NULL হয়, তাহলে পরবর্তী আর্গুমেন্টের মান ফেরত দেয়।

      SELECT coalesce(NULL, NULL, 'Presto');
      -- Output: Presto
      
    • if(condition, true_value, false_value): একটি শর্তের উপর ভিত্তি করে দুটি মানের মধ্যে একটি ফেরত দেয়।

      SELECT if(1 > 2, 'True', 'False');
      -- Output: False
      
  5. Aggregate Functions
    যদিও Aggregate Functions মূলত ডেটার গ্রুপিং এবং সংগঠন এর জন্য ব্যবহৃত হয়, তবে এগুলোকেও কিছু ক্ষেত্রে Scalar Functions হিসেবে ব্যবহার করা হতে পারে, যেমন count(), sum(), avg() ইত্যাদি।
    • sum(column): একটি কলামের মোট যোগফল ফেরত দেয়।

      SELECT sum(salary) FROM employees;
      
    • avg(column): একটি কলামের গড় মান ফেরত দেয়।

      SELECT avg(salary) FROM employees;
      

Scalar Functions কিভাবে ব্যবহার করবেন

Presto-তে Scalar Functions ব্যবহার করা অনেক সহজ। আপনি SQL কোয়েরি তে এই ফাংশনগুলি সরাসরি ব্যবহার করতে পারেন। নিচে কিছু উদাহরণ দেয়া হলো:

  1. গণনা করা:

    SELECT abs(-50);  -- Output: 50
    
  2. স্ট্রিং রূপান্তর:

    SELECT upper('hello world');  -- Output: HELLO WORLD
    
  3. তারিখের সাথে অপারেশন:

    SELECT date_add('day', 5, current_date);  -- Output: 2024-12-02 (যদি আজকের তারিখ 2024-11-27 হয়)
    
  4. NULL মান ব্যবস্থাপনা:

    SELECT coalesce(NULL, 100, 200);  -- Output: 100
    

সারাংশ:

Presto তে Scalar Functions অত্যন্ত শক্তিশালী এবং ব্যবহারকারীকে একক মানের উপর অপারেশন করতে সাহায্য করে। গাণিতিক, স্ট্রিং, তারিখ/সময়, এবং লজিক্যাল বিভিন্ন অপারেশন সহ অন্যান্য অনেক ধরনের ফাংশন Presto তে উপলব্ধ রয়েছে। এগুলি ব্যবহার করে ডেটা প্রসেসিংকে আরও দক্ষ এবং কার্যকর করা যায়।

Content added By

Aggregate Functions

173
173

Aggregate Functions হল SQL ফাংশন যা একাধিক রেকর্ড বা রো সারি থেকে ডেটা একত্রিত করে এবং একটি একক ফলাফল প্রদান করে। Presto তে বিভিন্ন ধরনের aggregate functions রয়েছে যা ব্যবহারকারীদের বিশ্লেষণের জন্য ডেটা উপসংহার (summary) তৈরি করতে সহায়ক।

Presto তে Aggregate Functions এর প্রধান ফাংশনসমূহ

Presto তে কিছু সাধারণ aggregate functions ব্যবহার করা হয়, যেমন COUNT(), SUM(), AVG(), MIN(), MAX() ইত্যাদি। নিচে এগুলির ব্যাখ্যা দেওয়া হলো:


১. COUNT()

COUNT() ফাংশনটি একটি কলামে মোট সংখ্যা গণনা করে। এটি সাধারণত কতটি রেকর্ড বা ভ্যালু আছে তা জানার জন্য ব্যবহৃত হয়।

ব্যবহার:

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

উদাহরণ:

SELECT COUNT(*) FROM employees;

এই কোয়েরি সমস্ত কর্মচারী রেকর্ডের সংখ্যা গননা করবে।


২. SUM()

SUM() ফাংশনটি নির্দিষ্ট একটি কলামের সমস্ত মান যোগ করে একটি মোট মান প্রদান করে।

ব্যবহার:

SELECT SUM(column_name)
FROM table_name
WHERE condition;

উদাহরণ:

SELECT SUM(salary) FROM employees;

এই কোয়েরি সমস্ত কর্মচারীদের বেতনের মোট যোগফল প্রদান করবে।


৩. AVG()

AVG() ফাংশনটি একটি কলামের গড় মান গণনা করে। এটি সংখ্যাতাত্ত্বিক মানগুলির গড় নির্ণয়ের জন্য ব্যবহৃত হয়।

ব্যবহার:

SELECT AVG(column_name)
FROM table_name
WHERE condition;

উদাহরণ:

SELECT AVG(age) FROM employees;

এই কোয়েরি কর্মচারীদের বয়সের গড় প্রদান করবে।


৪. MIN()

MIN() ফাংশনটি একটি কলামের সর্বনিম্ন মান প্রদান করে।

ব্যবহার:

SELECT MIN(column_name)
FROM table_name
WHERE condition;

উদাহরণ:

SELECT MIN(salary) FROM employees;

এই কোয়েরি সমস্ত কর্মচারীদের মধ্যে সর্বনিম্ন বেতন প্রদান করবে।


৫. MAX()

MAX() ফাংশনটি একটি কলামের সর্বোচ্চ মান প্রদান করে।

ব্যবহার:

SELECT MAX(column_name)
FROM table_name
WHERE condition;

উদাহরণ:

SELECT MAX(salary) FROM employees;

এই কোয়েরি সমস্ত কর্মচারীদের মধ্যে সর্বোচ্চ বেতন প্রদান করবে।


৬. GROUP_CONCAT()

GROUP_CONCAT() ফাংশনটি একটি কলামে সমস্ত মানকে একত্রিত করে, যাতে তারা একটি স্ট্রিং আকারে ফলাফল দেয়। এটি একাধিক মানকে একত্রে রিটার্ন করার জন্য ব্যবহৃত হয়।

ব্যবহার:

SELECT GROUP_CONCAT(column_name)
FROM table_name
GROUP BY another_column;

উদাহরণ:

SELECT GROUP_CONCAT(employee_name)
FROM employees
GROUP BY department;

এই কোয়েরি প্রতিটি বিভাগের সমস্ত কর্মচারীর নামকে একত্রিত করে একটি স্ট্রিং আকারে প্রদান করবে।


৭. VAR_POP() এবং VAR_SAMP()

  • VAR_POP() ফাংশনটি একটি কলামের জনসংখ্যার ভ্যারিয়েন্স প্রদান করে।
  • VAR_SAMP() ফাংশনটি একটি নমুনার ভ্যারিয়েন্স প্রদান করে।

ব্যবহার:

SELECT VAR_POP(column_name)
FROM table_name;
SELECT VAR_SAMP(column_name)
FROM table_name;

উদাহরণ:

SELECT VAR_POP(salary) FROM employees;

৮. STDDEV_POP() এবং STDDEV_SAMP()

  • STDDEV_POP() ফাংশনটি একটি কলামের জনসংখ্যার স্ট্যান্ডার্ড ডেভিয়েশন প্রদান করে।
  • STDDEV_SAMP() ফাংশনটি একটি নমুনার স্ট্যান্ডার্ড ডেভিয়েশন প্রদান করে।

ব্যবহার:

SELECT STDDEV_POP(column_name)
FROM table_name;
SELECT STDDEV_SAMP(column_name)
FROM table_name;

উদাহরণ:

SELECT STDDEV_POP(salary) FROM employees;

৯. COUNT(DISTINCT)

COUNT(DISTINCT) ফাংশনটি একটি কলামে ভিন্ন (unique) মানের সংখ্যা গণনা করে। এটি ডুপ্লিকেট মান গোনে না।

ব্যবহার:

SELECT COUNT(DISTINCT column_name)
FROM table_name;

উদাহরণ:

SELECT COUNT(DISTINCT department) FROM employees;

এই কোয়েরি কর্মচারীদের বিভাগগুলির মধ্যে ভিন্ন বিভাগের সংখ্যা গণনা করবে।


১০. HAVING এবং GROUP BY

HAVING ক্লজটি সাধারণত GROUP BY সহ ব্যবহার করা হয় যাতে aggregate functions এর ফলাফল উপর শর্ত আরোপ করা যায়।

ব্যবহার:

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 5;

উদাহরণ:

SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

এই কোয়েরি শুধুমাত্র তাদের বিভাগ প্রদর্শন করবে যেখানে গড় বেতন 50,000 এর বেশি।


Aggregate Functions এর সুবিধা

  1. ডেটা সংক্ষেপণ:
    Aggregate functions ডেটার উপসংহার তৈরি করতে সহায়ক, যা বিশ্লেষণ এবং রিপোর্টিং এর জন্য খুবই গুরুত্বপূর্ণ।
  2. ডেটা প্রক্রিয়া দ্রুত করা:
    একটি বড় ডেটাসেটের উপর SQL কোয়েরি চালানোর মাধ্যমে Aggregate functions ব্যবহার করে ফলাফল দ্রুত পাওয়া যায়।
  3. গণনা এবং অ্যানালাইসিস:
    Aggregate functions বিশ্লেষণের জন্য যেমন গড়, সর্বোচ্চ, সর্বনিম্ন, মোট ইত্যাদি গণনা করতে সহায়তা করে।

সারাংশ: Presto তে Aggregate Functions এর মাধ্যমে ডেটা বিশ্লেষণের প্রক্রিয়া আরও সহজ হয়। এগুলি বড় ডেটাসেটের উপর ক্যালকুলেশন পরিচালনা করতে ব্যবহৃত হয় এবং ব্যবসায়িক সিদ্ধান্তে সহায়ক হতে পারে।

Content added By

Window Functions

183
183

Window Functions হল SQL-এ ব্যবহৃত বিশেষ ধরনের ফাংশন যা একটি "window" বা "ভিউ" এর মধ্যে ডেটা প্রসেস করতে সক্ষম। এই ফাংশনগুলি সাধারণত ROW_NUMBER(), RANK(), LEAD(), LAG() ইত্যাদি যেমন অ্যাগ্রিগেট ফাংশনগুলির সাথে ব্যবহৃত হয়, কিন্তু এটি গ্রুপিং না করে ডেটাকে উইন্ডো ভিত্তিতে পরিচালনা করতে দেয়।

Presto-তে Window Functions ব্যবহার করে আপনি একটি নির্দিষ্ট রেঞ্জের উপর ভিত্তি করে ডেটা বিশ্লেষণ করতে পারবেন, যেমন একটি নির্দিষ্ট সময়ের মধ্যে চলমান গড়, র‌্যাঙ্কিং, শীর্ষ এবং নিচের মান খুঁজে বের করা।


Window Functions-এর গঠন

Window Functions সাধারণত দুটি প্রধান অংশে বিভক্ত:

  1. ফাংশন: এটি সেই ফাংশন যা আপনি ব্যবহার করতে চান (যেমন, ROW_NUMBER(), RANK(), LEAD(), ইত্যাদি)।
  2. এটি প্রযোজ্য হতে হবে এমন উইন্ডো (OVER Clause): উইন্ডো হল সেই অংশ যেখানে আপনি ফাংশনটি প্রয়োগ করতে চান।
SELECT column1, column2, window_function() OVER (PARTITION BY column1 ORDER BY column2)
FROM table_name;

এখানে:

  • window_function() হল ব্যবহার করা উইন্ডো ফাংশন, যেমন ROW_NUMBER(), RANK(), LEAD(), ইত্যাদি।
  • PARTITION BY হল ডেটাকে কীভাবে বিভক্ত করা হবে তা নির্দেশ করে।
  • ORDER BY হল সেই ক্রমে ডেটাকে সাজানোর জন্য নির্দেশনা দেয়, যার ওপর ভিত্তি করে উইন্ডো ফাংশন কাজ করবে।

Presto Window Functions-এর উদাহরণ

১. ROW_NUMBER()
ROW_NUMBER() ফাংশন প্রতিটি রেকর্ডকে একটি অনন্য রাঙ্ক প্রদান করে, যা তার অবস্থান অনুযায়ী সাজানো হয়।

SELECT customer_id, order_date, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date) AS order_rank
FROM orders;

এখানে:

  • PARTITION BY customer_id: প্রতিটি গ্রাহকের জন্য আলাদা আলাদা উইন্ডো তৈরি করা হচ্ছে।
  • ORDER BY order_date: অর্ডার তারিখ অনুযায়ী রেকর্ড সাজানো হচ্ছে।

ফলাফল:

  • প্রতিটি গ্রাহককে তাদের অর্ডারের একটি সুনির্দিষ্ট র্যাঙ্ক দেওয়া হবে।

২. RANK()
RANK() ফাংশন প্রতিটি রেকর্ডকে একটি র্যাঙ্ক প্রদান করে, তবে একাধিক সমান মান থাকলে তারা একই র্যাঙ্ক পায়, এবং পরবর্তী র্যাঙ্কটি লাফ দিয়ে চলে যায়।

SELECT customer_id, order_date, amount, RANK() OVER (PARTITION BY customer_id ORDER BY amount DESC) AS rank
FROM orders;

এখানে:

  • RANK() ফাংশনটি প্রতিটি গ্রাহকের জন্য অর্ডারের পরিমাণ অনুযায়ী র্যাঙ্ক প্রদান করবে, এবং যদি কোনো দুটি অর্ডারের পরিমাণ সমান থাকে, তাহলে তারা একই র্যাঙ্ক পাবে।

ফলাফল:

  • গ্রাহক অনুযায়ী অর্ডারের পরিমাণের ওপর ভিত্তি করে র্যাঙ্ক প্রদান করা হবে।

৩. LEAD() এবং LAG()
LEAD() এবং LAG() ফাংশন দুটি ব্যবহার করা হয় পেছনের বা পরের রেকর্ডের মান দেখতে।

  • LEAD(): পরবর্তী রেকর্ডের মানকে প্রাপ্ত রেকর্ডের সাথে তুলনা করতে ব্যবহৃত হয়।
  • LAG(): পূর্ববর্তী রেকর্ডের মানকে প্রাপ্ত রেকর্ডের সাথে তুলনা করতে ব্যবহৃত হয়।

LEAD() উদাহরণ:

SELECT customer_id, order_date, amount, LEAD(amount) OVER (PARTITION BY customer_id ORDER BY order_date) AS next_order_amount
FROM orders;

এখানে:

  • LEAD(amount) পরবর্তী অর্ডারের পরিমাণ দেখাবে।

LAG() উদাহরণ:

SELECT customer_id, order_date, amount, LAG(amount) OVER (PARTITION BY customer_id ORDER BY order_date) AS previous_order_amount
FROM orders;

এখানে:

  • LAG(amount) পূর্ববর্তী অর্ডারের পরিমাণ দেখাবে।

ফলাফল:

  • LEAD() এবং LAG() ব্যবহার করে আপনি প্রতিটি রেকর্ডের পরবর্তী বা পূর্ববর্তী মান দেখতে পারবেন, যা সময়ভিত্তিক বা ধারাবাহিক বিশ্লেষণের জন্য দরকারী।

৪. SUM() এবং AVG() উইন্ডো ফাংশন হিসেবে

SUM() এবং AVG() ফাংশনও উইন্ডো ফাংশন হিসেবে ব্যবহৃত হতে পারে, যেখানে একটি নির্দিষ্ট উইন্ডোর মধ্যে মোট বা গড় মান বের করা হয়।

SUM() উদাহরণ:

SELECT customer_id, order_date, amount, SUM(amount) OVER (PARTITION BY customer_id ORDER BY order_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sum
FROM orders;

এখানে:

  • ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW নির্দেশ করে যে উইন্ডোটি বর্তমান রেকর্ড এবং এর পূর্ববর্তী সমস্ত রেকর্ডের মধ্যে থাকতে হবে।
  • SUM(amount) এর মাধ্যমে গ্রাহকের জন্য মোট অর্ডার পরিমাণ বের করা হচ্ছে।

AVG() উদাহরণ:

SELECT customer_id, order_date, amount, AVG(amount) OVER (PARTITION BY customer_id ORDER BY order_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS moving_average
FROM orders;

এখানে:

  • AVG(amount) গ্রাহকের জন্য চলমান গড় হিসাব করবে।

Window Functions এর সুবিধা

  1. ডেটা বিশ্লেষণ সহজতর করা:
    Window Functions আপনাকে কোনও গ্রুপিং ছাড়াই ডেটা রেঞ্জে বিশ্লেষণ করতে সাহায্য করে, যা ঐতিহ্যগত অ্যাগ্রিগেট ফাংশনগুলির চেয়ে বেশি নমনীয়।
  2. চলমান গড় বা র্যাঙ্কিং গণনা:
    Presto-এর Window Functions ব্যবহার করে আপনি চলমান গড়, শীর্ষ বা নীচের মান, র্যাঙ্কিং এবং অনেক ধরনের বিশ্লেষণ সহজেই করতে পারেন।
  3. ডেটার সাথে তুলনামূলক বিশ্লেষণ:
    LAG() এবং LEAD() ফাংশন ব্যবহার করে আপনি বর্তমান রেকর্ডের সাথে পূর্ববর্তী বা পরবর্তী রেকর্ডের তুলনা করতে পারেন।

সারাংশ

Presto-তে Window Functions অত্যন্ত শক্তিশালী টুল, যা SQL কোয়েরি লেখার সময় উন্নত বিশ্লেষণ করতে সহায়ক। এগুলি আপনাকে গ্রুপিং ছাড়াই চলমান গড়, র্যাঙ্কিং, এবং অতিরিক্ত ডেটা বিশ্লেষণ করতে সক্ষম করে, যা ডেটা সায়েন্স এবং ব্যবসায়িক বিশ্লেষণের জন্য খুবই উপকারী।

Content added By

User Defined Functions (UDF) তৈরি করা

162
162

Presto একটি শক্তিশালী SQL কোয়েরি ইঞ্জিন, কিন্তু কখনও কখনও কিছু বিশেষ ধরনের ফাংশন বা কাস্টম অপারেশন প্রয়োজন হতে পারে যা Presto-এর বিল্ট-ইন ফাংশনালিটি দ্বারা সরাসরি সম্পাদন করা সম্ভব নয়। এই পরিস্থিতিতে User Defined Functions (UDF) ব্যবহার করা হয়। Presto-তে UDF ব্যবহার করে আপনি নিজস্ব কাস্টম ফাংশন তৈরি করতে পারেন যা নির্দিষ্ট ডেটা প্রসেসিংয়ের জন্য উপযোগী।


Presto তে UDF কী এবং কেন প্রয়োজন?

User Defined Functions (UDF) হল এমন ফাংশন যা ব্যবহারকারী নিজেই ডিফাইন করে, সাধারণত প্রোগ্রামিং ভাষার সাহায্যে, যেমন Java। Presto তে UDF ব্যবহার করে আপনি নিম্নলিখিত সুবিধা পেতে পারেন:

  1. কাস্টম অপারেশন: নির্দিষ্ট কাজ বা অপারেশনগুলি যা বিল্ট-ইন SQL ফাংশন দ্বারা করা সম্ভব নয়, তা করা।
  2. ডেটা প্রসেসিং উন্নত করা: ডেটা বিশ্লেষণের জন্য নতুন ফাংশন তৈরি করা যা সাধারণ SQL ফাংশনগুলির তুলনায় আরও শক্তিশালী।
  3. পারফরম্যান্স অপটিমাইজেশন: কিছু ক্ষেত্রে কাস্টম ফাংশন তৈরি করলে ডেটা প্রসেসিং আরও দ্রুত হতে পারে।

Presto তে UDF তৈরি করার ধাপ

Presto তে UDF তৈরি করতে Java প্রোগ্রামিং ভাষা ব্যবহার করতে হয়। Presto প্লাগইন আর্কিটেকচার সমর্থন করে এবং UDF তৈরি করার জন্য একটি স্পেসিফিক প্রক্রিয়া অনুসরণ করতে হয়। নিচে ধাপে ধাপে UDF তৈরি এবং কনফিগার করার প্রক্রিয়া দেওয়া হলো।

ধাপ ১: Java ফাংশন তৈরি করা

প্রথমে, Java ভাষায় একটি ক্লাস তৈরি করুন যা Presto ফাংশনকে বাস্তবায়ন করবে। নিচে একটি উদাহরণ দেয়া হলো:

package com.example.presto.udf;

import io.prestosql.spi.function.Description;
import io.prestosql.spi.function.SqlFunction;
import io.prestosql.spi.function.SqlScalarFunction;
import io.prestosql.spi.type.StandardTypes;

@SqlFunction("custom_addition")
@Description("Adds two numbers together")
public final class CustomAdditionFunction
{
    private CustomAdditionFunction() {}

    @SqlScalarFunction
    @Description("Adds two numbers together")
    public static long add(long a, long b)
    {
        return a + b;
    }
}

এখানে, custom_addition নামক একটি UDF তৈরি করা হয়েছে যা দুটি ইনপুট নম্বরের যোগফল প্রদান করবে।

  • @SqlFunction: এটি এই ফাংশনটি Presto SQL ফাংশন হিসেবে ঘোষণা করে।
  • @SqlScalarFunction: এটি নির্দেশ করে যে ফাংশনটি SQL কুয়েরিতে ব্যবহৃত হবে।
  • long a, long b: দুটি ইনপুট প্যারামিটার হিসাবে দুইটি সংখ্যা নেয় এবং তাদের যোগফল প্রদান করে।

ধাপ ২: Java ক্লাস কম্পাইল করা

Java ক্লাসটি কম্পাইল করতে আপনার Maven বা Gradle ব্যবহার করতে পারেন। Maven এর জন্য pom.xml কনফিগারেশন ব্যবহার করা যেতে পারে। উদাহরণ:

<dependency>
  <groupId>io.prestosql</groupId>
  <artifactId>presto-spi</artifactId>
  <version>350</version>
</dependency>

এর পর Maven কমান্ড দিয়ে ক্লাস কম্পাইল করুন:

mvn clean install

ধাপ ৩: UDF লাইব্রেরি Presto তে সংযুক্ত করা

এখন আপনার Java ফাংশন লাইব্রেরি Presto তে যুক্ত করতে হবে। এটি করার জন্য, আপনার .jar ফাইলটি Presto সার্ভারের plugin ফোল্ডারে রাখতে হবে।

cp target/your-udf.jar /opt/presto/plugin/

ধাপ ৪: Presto কনফিগারেশন সেট করা

Presto এ UDF কাজ করার জন্য আপনাকে Presto এর plugin ফোল্ডারে একটি কনফিগারেশন ফাইল তৈরি করতে হবে, যাতে Presto এই নতুন ফাংশনটি চিনতে পারে।

উদাহরণস্বরূপ, আপনি যদি com.example.presto.udf.CustomAdditionFunction নামের ফাংশনটি ব্যবহার করতে চান, তবে আপনাকে এটি ডিফাইন করতে হবে।

ধাপ ৫: UDF ব্যবহার করা

এখন আপনি Presto SQL কোয়েরিতে আপনার কাস্টম ফাংশনটি ব্যবহার করতে পারবেন। উদাহরণ:

SELECT custom_addition(10, 20);

এই কোয়েরি 10 এবং 20 এর যোগফল ৩০ প্রদান করবে।


Presto তে UDF এর সুবিধা

  • কাস্টম ফাংশন: Presto তে UDF ব্যবহার করে আপনি কাস্টম ফাংশন তৈরি করতে পারেন যা আপনার নির্দিষ্ট কাজ সম্পাদন করতে পারে।
  • বিকল্প অপশন: সাধারণ SQL ফাংশনগুলির বাইরে আরও অপশন প্রদান করতে সক্ষম।
  • ডেটা প্রক্রিয়াকরণ: ডেটা প্রক্রিয়াকরণকে আরও দক্ষ করে তোলে যদি আপনি নির্দিষ্ট লজিক যুক্ত করতে চান।

Presto তে UDF এর সীমাবদ্ধতা

  • প্রোগ্রামিং দক্ষতা প্রয়োজন: Presto তে UDF তৈরি করতে Java বা অন্য প্রোগ্রামিং ভাষার জ্ঞান প্রয়োজন।
  • পারফরম্যান্স প্রভাব: যদি UDF ফাংশনগুলি অপ্রয়োজনীয় বা অদক্ষভাবে তৈরি করা হয়, তাহলে সেগুলি Presto-এর পারফরম্যান্সকে নেতিবাচকভাবে প্রভাবিত করতে পারে।

Presto তে UDF ব্যবহার করলে আপনি আরও কাস্টমাইজড এবং শক্তিশালী ডেটা বিশ্লেষণ তৈরি করতে পারেন যা স্ট্যান্ডার্ড SQL ফাংশনের বাইরে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion